// term.h

#ifndef TERM_H
#define TERM_H

#include "motor.h"
#include <pthread.h>
#include <stdbool.h> // 添加对bool类型的支持

/**************************** 电机命令 ****************************/
typedef struct {
  int target_pos[MOTOR_NUM];
  int actual_pos[MOTOR_NUM];
  int plan_pos[MOTOR_NUM];
  int previous_mode;
  int mode;
  int state[MOTOR_NUM];
} MotorSet;

typedef struct {
  double x;
  double y;
  double z;
  double Rx;
  double Ry;
  double Rz;
} Pose;

typedef enum {
  GRATING_CHECK_IDLE = 0,  // 空闲状态
  GRATING_CHECK_READING,   // 正在读取光栅值
  GRATING_CHECK_ADJUSTING, // 正在进行微调
  GRATING_CHECK_COMPLETE   // 校正完成
} GratingCheckState;

// 函数声明
void perform_grating_micro_adjustment(int32_t ideal_grating_diff);
void reset_grating_check_state(void);

int ZERO_PULSE_THETA6; // 旋转关节6
int LIMIT_THETA6_MIN;
int LIMIT_THETA6_MAX;

// 队列接口
void updateStatues(MotorSet *cmd);
int term_init(void);
#endif // TERM_H
